<?
class CValidate
{
	
	function Field($sValue = NULL, $arParams = NULL)
	{
		$bValid = true;
		
		$bValid = $bValid && $sValue && $arParams['TYPE'];
		
		// Проверка по типу
		switch ($arParams['TYPE'])
		{
			case 'EMAIL':
				$bValid = $bValid && preg_match('/^[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?\.[A-Za-z0-9]{2,6}$/', $sValue);
				break;
			case 'STRING':
				$bValid = $bValid && is_string($sValue);
				break;
			case 'NUMBER':
				$bValid = $bValid && is_numeric($sValue);
				break;
			case 'EQUAL':
				$bValid = $bValid && $sValue == $arParams['EQUAL_VALUE'];
				break;
			default:
				return false;
				break;
		}

		// Проверка минимальной и максимальной длины
		if($arParams['MIN_LEN']) $bValid = $bValid && strlen($sValue) >= $arParams['MIN_LEN'];
		if($arParams['MAX_LEN']) $bValid = $bValid && strlen($sValue) <= $arParams['MAX_LEN'];
		
		// Проверка с помошью шаблона
		if($arParams['REGEXP']) $bValid = $bValid && preg_match($arParams['REGEXP'], $sValue);
		
		if(!$bValid)
		{
			if($arParams['ERROR_MESSAGE'])
			{
				CMain::SetError($arParams['ERROR_MESSAGE'], 'CVALIDATE');
			}
			else
			{
				CMain::SetError('Incorrect field', 'CVALIDATE');
			}
			
		}
		
		return $bValid;
	}
}